package cn.aku.d2_collection;

import java.util.*;
/*
 本类用于测试List接口
 */
public class Test2_List {
    public static void main(String[] args) {
        //创建List接口多态对象，
        List<String> list=new ArrayList<>();

        //测试继承自Collection接口中的方法
        list.add("齐天大圣");
        list.add("天蓬元帅");
        list.add("卷帘大将");
        list.add(2,"玉皇大帝");
        System.out.println(list);

        System.out.println(list.contains("天蓬元帅"));
        System.out.println(list.hashCode());
        System.out.println(list.isEmpty());//判断集合是否为空
        System.out.println(list.size());
        System.out.println(list.remove("天蓬元帅"));
        System.out.println(list);
        System.out.println(Arrays.toString(list.toArray()));

        list.add("唐僧");//添加到最后
        System.out.println(list);
        list.add(1,"牛魔王");
        list.add(4,"牛魔王");
        System.out.println(list);
        System.out.println(list.get(3));//根据索引获取元素

        System.out.println(list.indexOf("牛魔王"));//判断第一次出现的索引
        System.out.println(list.lastIndexOf("牛魔王"));//判断最后一次出现的索引
        System.out.println(list.set(1,"阎王"));//修改索引处元素
        System.out.println(list);
        System.out.println(list.remove(5));//删除
        System.out.println(list);

        //截取子集合，不改变原集合
        System.out.println(list.subList(1,3));//[1,3)
        System.out.println(list);
        System.out.println("===========================");
        // addAll() containsALL()  removeAll()

        /*
         集合迭代的方式
         1.for
         2.高效for
         3.iterator
         4.listIterator
         */
        //方式一:List有下标，
        //开始：从0 到 list.size()
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
        System.out.println("========================");
        //方式二，高效for循环
        for (String s:list) {
            System.out.println(s);
        }
        System.out.println("========================");
        //方式三：获取Collection的属于此集合的迭代器
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("========================");
        //方式四：获取List自己的---ListIterator迭代器
        ListIterator<String> it2 = list.listIterator();
        while (it2.hasNext()){
            System.out.println(it2.next());
        }

    }
}
